'use strict';
/**
 * 全局自定义配置（大型配置，最好创建相对配置文件）
 * by J.sky
 */
import Vue from "vue";

const $This = Vue.prototype;

var loading;
//============loading加载事件-打开
function openLoad() {
  loading = $This.$loading({
    lock: true,
    text: '加载中...',
    spinner: 'el-icon-loading',
    background: 'hsla(0,0%,100%,.8)'
  });
}
//============loading加载事件-关闭
function closeLoad() {
  loading.close();
}

/**
 * 消息提示 Elemnt 版本
 * @param content
 * @param type
 * info: '消息' = 1, 默认
 * success: '成功' = 2,
 * warning: '警告' = 3,
 * error: '错误' = 4
 */
function Msg(content, type) {
  if (type === 3) {
    $This.$message({
      message: content,
      type: 'warning'
    });
  } else if (type === 4) {
    $This.$message.error(content);
  } else {
    $This.$message({
      message: content,
      type: 'success'
    });
  }
}

function Invalid(v) {
  return v === undefined || v === null || v === "";
};

function IsObject(is) {
  return Object.prototype.toString.call(is) === '[object Object]';
}

function IsArray(is) {
  return Object.prototype.toString.call(is) === '[object Array]';
}

/**
 * 是否在数组中
 * 若是数组则判断是否都在目标数组中
 */
function InArray(v, a) {
  if (IsArray(v)) {
    if (v.length === 0) return false;

    let l = 0; // 在目标数组中的计数
    v.forEach(n => {
      if (InArray(n, a)) {
        l++;
      };
    });
    return l === v.length;
  }
  for (let i in a) {
    if (a[i] == v) {
      return true;
    };
  };
  return false;
}

/**
 * 去除无效的数组项
 */
function ArrayFilter(a) {
  let n = [];
  for (let i in a) {
    if (!Invalid(a[i])) {
      n.push(a[i]);
    };
  };
  return n;
}

/**
 * 纯数组数据 用,号分隔
 */
function Array2String(a) {
  let s = "";
  let l = a.length;
  for (let i in a) {
    if (!Invalid(a[i])) {
      s += a[i];
    };
    if (i < l - 1) {
      s += ",";
    };
  };
  return s;
}

// 对象数据转url get数据
function Object2Query(obj) {
  let l = '';
  for (let i in obj) {
    if (i && obj[i] !== '' && obj[i] !== undefined && obj[i] !== null) {
      l += (i + '=' + obj[i] + '&');
    }
  }
  return l.replace(/(^&|&$)/gi, '');
}

/**
 * 生成随机数
 * @return number 随机数
 */
function GenerateNum(min, max) {
  return parseInt(Math.random() * (max - min + 1) + min, 10);
}

/**
 * 生成数字字符串
 * @return string 随机字符串
 */
const nums = "1234567890"
function GenerateNumStr(len) {
  let strLen = nums.length - 1;
  let temp = "";
  for (var i = 0; i < len; i++) {
    temp += nums[GenerateNum(0, strLen)];
  }
  return temp;
}

/**
 * 生成随机字符串
 * @return string 随机字符串
 */
const str = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
function GenerateStr(len) {
  let strLen = str.length - 1;
  let temp = "";
  for (var i = 0; i < len; i++) {
    temp += str[GenerateNum(0, strLen)];
  }
  return temp;
}

/**
 * 生成随机汉字
 * @return string 随机字符串
 */
function GenerateHan(len) {
  let temp = "";
  for (var i = 0; i < len; i++) {
    let num = GenerateNum(19968, 40869);
    let hex = num.toString(16); // 转16进制 文本
    eval("temp +=" + '"\\u' + hex + '"')
  }
  return temp;
}

function CloseWindow() {
  //判断是否为ie
  if (navigator.userAgent.indexOf("MSIE") > 0) {
    //判断是否为ie6
    if (navigator.userAgent.indexOf("MSIE 6.0") > 0) {
      window.opener = null; window.close();
    }
    else {
      window.open('', '_top'); window.top.close();
    }
  }
  //判断是否为firefox
  else if (navigator.userAgent.indexOf("Firefox") > 0) {
    window.location.href = 'about:blank';
  }
  //其他非firefox等主流浏览器如chrome,safari
  else {
    window.opener = null;
    window.open('', '_self', '');
    window.close();
  }
}

// 获取 url参数
function GetQuery(key) {
  // 获取URL中?之后的字符
  var str = location.search;
  str = str.substring(1, str.length);

  // 以&分隔字符串，获得类似name=xiaoli这样的元素数组
  var arr = str.split("&");
  var obj = new Object();

  // 将每一个数组元素以=分隔并赋给obj对象
  for (var i = 0; i < arr.length; i++) {
    var tmp_arr = arr[i].split("=");
    obj[decodeURIComponent(tmp_arr[0])] = decodeURIComponent(tmp_arr[1]);
  }
  return obj[key] || '';
}


//公共配置文件
export default {
  Invalid,
  Msg,
  openLoad,
  closeLoad,
  Page_sizes: [15, 30, 50, 100, 200, 500, 800, 1000],
  Page_size: '15',
};
